package com.efast.dmom.mgmt.service.les;

import java.util.List;

import com.efast.dmom.mgmt.entity.les.TwDocOrderDetails;
import com.efast.dmom.mgmt.utils.Assist;

public interface TwDocOrderDetailsService{
	/**
	 * 获得TwDocOrderDetails数据的总行数,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * @param assist
	 * @return
	 */
    long getTwDocOrderDetailsRowCount(Assist assist);
	/**
	 * 获得TwDocOrderDetails数据集合,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * @param assist
	 * @return
	 */
    List<TwDocOrderDetails> selectTwDocOrderDetails(Assist assist);
	/**
	 * 获得一个TwDocOrderDetails对象,以参数TwDocOrderDetails对象中不为空的属性作为条件进行查询
	 * @param obj
	 * @return
	 */
    TwDocOrderDetails selectTwDocOrderDetailsByObj(TwDocOrderDetails obj);
	/**
	 * 通过TwDocOrderDetails的id获得TwDocOrderDetails对象
	 * @param id
	 * @return
	 */
    TwDocOrderDetails selectTwDocOrderDetailsById(Integer id);
	/**
	 * 插入TwDocOrderDetails到数据库,包括null值
	 * @param value
	 * @return
	 */
    int insertTwDocOrderDetails(TwDocOrderDetails value);
	/**
	 * 插入TwDocOrderDetails中属性值不为null的数据到数据库
	 * @param value
	 * @return
	 */
    int insertNonEmptyTwDocOrderDetails(TwDocOrderDetails value);
	/**
	 * 批量插入TwDocOrderDetails到数据库
	 * @param value
	 * @return
	 */
    int insertTwDocOrderDetailsByBatch(List<TwDocOrderDetails> value);
	/**
	 * 通过TwDocOrderDetails的id删除TwDocOrderDetails
	 * @param id
	 * @return
	 */
    int deleteTwDocOrderDetailsById(Integer id);
	/**
	 * 通过辅助工具Assist的条件删除TwDocOrderDetails
	 * @param assist
	 * @return
	 */
    int deleteTwDocOrderDetails(Assist assist);
	/**
	 * 通过TwDocOrderDetails的id更新TwDocOrderDetails中的数据,包括null值
	 * @param enti
	 * @return
	 */
    int updateTwDocOrderDetailsById(TwDocOrderDetails enti);
 	/**
	 * 通过辅助工具Assist的条件更新TwDocOrderDetails中的数据,包括null值
	 * @param value
	 * @param assist
	 * @return
	 */
    int updateTwDocOrderDetails(TwDocOrderDetails value,  Assist assist);
	/**
	 * 通过TwDocOrderDetails的id更新TwDocOrderDetails中属性不为null的数据
	 * @param enti
	 * @return
	 */
    int updateNonEmptyTwDocOrderDetailsById(TwDocOrderDetails enti);
 	/**
	 * 通过辅助工具Assist的条件更新TwDocOrderDetails中属性不为null的数据
	 * @param value
	 * @param assist
	 * @return
	 */
    int updateNonEmptyTwDocOrderDetails(TwDocOrderDetails value, Assist assist);
    
    /**
     * 按行分配
     * @param twDocOrderDetails
     */
	void distributionByBill(TwDocOrderDetails twDocOrderDetails,String pickAllocNo);
	
	 /**
     * 调用存储过程获取系统唯一编码
     * @param twDocOrderDetails
     */
	String executeProcGetCode();
	
	/**
	 * 按行生成拣货任务
	 * @param twDocOrderDetails
	 */
	void generatePickingByBill(TwDocOrderDetails twDocOrderDetails);
	
	/**
	 * 按行取消分配
	 * @param twDocOrderDetails
	 */
	void cancelDistribution(TwDocOrderDetails twDocOrderDetails);
}